#include "Persona.h"
#include "Archivo.h"



void Archivo::setNombre(char *nom)
{
   nombre = new char[strlen(nom)];
   strcpy(nombre,nom);
}

char * Archivo::getNombre(void){ return nombre;}

void Archivo::guardar(Persona p)
{
 	  ofstream salida;
 	  salida.open(nombre, ios::app);
 	  if(salida.fail()){
		     cout << "Error al abrir el archivo: " << nombre << endl;
     }else{
 		     salida << p.getNombre() << endl;
 		     salida << p.getDireccion() << endl; 	
 		     salida << p.getEdad() << endl;					     
 		     salida << p.getTelefono()<<endl ; 		     
 		     salida.close();
     }
}

Persona Archivo::leer(int pos)// busca contacto por posicion
{
   ifstream entrada;
   Persona persona;   
   entrada.open(nombre);
   if(entrada.fail()==true){
		   cout << "Error al abrir el archivo :" << getNombre() << endl;
   }else{
			char linea[100];
			bool encontrado=false;
			for(int i=1; i<pos; i++){
	          for(int j= 1; j<=4; j++){
				     entrada.getline(linea,100);
	          }
		   }
	      entrada.getline(linea,100);
	      persona.setNombre(linea);
	      
	      entrada.getline(linea,100);
	      persona.setDireccion(linea);
          	
	      entrada.getline(linea,100);
	      persona.setEdad(atoi(linea));
	      
	      entrada.getline(linea,100);
	      persona.setTelefono(atoi(linea));
			entrada.close();			 
   }
	return persona;	
}


void Archivo::buscar(char *nombreb)//buscar archivo por nombre
{
   ifstream entrada;
   entrada.open(nombre);
   if(entrada.fail()==true){
		   cout << "Error al abrir el archivo :" << getNombre() << endl;
   }else{
			char linea[100];
			Persona persona;
			bool encontrado=false;
			do{
		       entrada.getline(linea,100);
		       persona.setNombre(linea);
		       entrada.getline(linea,100);
		       persona.setDireccion(linea);	
		       entrada.getline(linea,100);
		       persona.setEdad(atoi(linea));
		       entrada.getline(linea,100);
		       persona.setTelefono(atoi(linea));
		       
				 if (strcmp(persona.getNombre(),nombreb)==0){
				 	  persona.mostrar();
				 	  encontrado = true;
			    }
   		}while(entrada.eof()==false && encontrado==false);
			entrada.close();			 
   }	 
   
}


void Archivo::listar(void)//listar todos los contactos
{
   ifstream entrada;
   entrada.open(nombre);
   if(entrada.fail()==true){
			cout << "Error al abrir el archivo " << nombre << endl;
   }else{
			char linea[100];
			Persona persona;
			int cont = 0;
			do{
		       entrada.getline(linea,100);
		       persona.setNombre(linea);
		       entrada.getline(linea,100);
		       persona.setDireccion(linea);	
		       entrada.getline(linea,100);
		       persona.setEdad(atoi(linea));
		       entrada.getline(linea,100);
		       persona.setTelefono(atoi(linea));
		       cont++;
		       cout << "Contacto " << cont << ": " << endl;
				 persona.mostrar();
				 cout << endl;
   		}while(entrada.eof()==false);
			entrada.close();	
   }		 				 	       
		       
}
